package com.github.zyf.ioaj.annotation.internal;

import com.github.zyf.ioaj.constant.ParamType;

import java.lang.annotation.*;

/**
 * <h1>算法基础变量</h1>
 * <p>算法基础变量即全程不变的量（基础参数），但不包括输入量，输入量对应的是{@link InputParam}</p>
 * <p>
 * 有两个可选参数
 * <ul>
 *     <li>变量类型：{@link #type()}</li>
 *     <li>变量含义：{@link #desc()}</li>
 * </ul>
 * 虽然都有默认值，但是在使用的时候有必要还是写清楚
 *
 * @author zyf
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface BasicParam {
    /**
     * @return 变量类型 {@link ParamType}，默认值是字符串 {@link ParamType#STRING}
     */
    ParamType type() default ParamType.STRING;

    /**
     * @return 变量含义描述，字符串类型，默认值是 "BasicParam"
     */
    String desc() default "BasicParam";
}
